#include "mk_auto_ptr.h"

#include <stdlib.h>

template <class T>
mk_auto_ptr<T>::mk_auto_ptr( mk_auto_ptr &rhs )// throw(): ap(rhs.release)
{

}

template <class T>
T& mk_auto_ptr<T>::operator*() const
{
	return * ap;
}

template <class T>
T* mk_auto_ptr<T>::operator->() const
{
	return ap;
}

template <class T>
T* mk_auto_ptr<T>::release()// throw()
{
	T* tmp(ap);
	ap = 0;
	return tmp;
}

template <class T>
void mk_auto_ptr<T>::reset( T* ptr/*=0*/ ) //throw()
{
	if(ap != ptr)
	{
		delete ap;
		ap = ptr;
	}
}
